#include "misdatos.h"
#include "ui_misdatos.h"
#include <QMessageBox>
#include <QFileDialog>

misdatos::misdatos(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::misdatos)
{
    ui->setupUi(this);
    cleardatsWidget();
    connect( ui->QPBBorrarDatos, SIGNAL(clicked()), this, SLOT(clearWidget()) );
    connect( ui->QPBCancelar, SIGNAL(clicked()), this, SLOT(closeWidget()) );
    connect( ui->QPBAceptar, SIGNAL(clicked()), this, SLOT(adddatsDB()) );
    connect( ui->QPBCargarImagen, SIGNAL(clicked()), this, SLOT(browImg()) );
    connect( ui->QPBQuitarImagen, SIGNAL(clicked()), this, SLOT(clearImg()) );
    //PUNTERO PARA EL MESSAGEBOX DE CANCELAR
    clApp = cnlApp::initCnlApp();
    //PUNTERO A LA CLASE QUE SE ENCARGA DE LA CONEXION
    //CON LA BASE DE DATOS
    cnnDB = conexionDB::instance();
}

misdatos::~misdatos()
{
    delete ui;
    if( cnnDB!= NULL ){
        //delete cnnDB;
    }
}

//FUNCION QUE SE ENCARGA DE LIMPIAR TODOS LOS DATOS
//DEL WIDGET
void misdatos::cleardatsWidget( void ){
    ui->lENombreC->setText("");
    ui->lEApeC->setText("");
    ui->lECelularC->setText("");
    ui->lEEdadC->setText("");
    ui->lEEmail->setText("");
    ui->LEEmail2->setText("");
    ui->LEFcaebook->setText("");
    ui->lETelefonoC->setText("");
    ui->LETwietter->setText("");
    ui->LEWeb->setText("");
    ui->tENota->setText("");
}

//AGREGA Y/O COPIA EL PUNTERO QUE SE ENCARGA DE
//EL MANEJO DE LA BASE DE DATOS
void misdatos::addCnnDB( conexionDB **cnn ){
    cnnDB = (*cnn);
    return;
}

//SLOT PARA LIMPIAR EL FORMULARIO DEL WIDGET
void misdatos:: clearWidget( void ){
    cleardatsWidget();
    return;
}
//SLOT PARA AGREGAR LOS DATOS A LA BASE DE DATOS
void misdatos::adddatsDB( void ){
    if( recuestDats() == true ){
        //SE MUEVE DE LUGAR LA IMAGEN A USAR COMO REFERENCIA
        if( ui->lblImagenContacto->text() == "No hay imagen cargada" ){
        }else{
            QString image = "tmp/mi_imagen.jpeg";
            QFile imagen( image );
            imagen.copy( "img/my/"+ui->lEEmail->text()+".jpeg" );
            imagen.remove( image );
        }
        //
        if( cnnDB->addDatsUser(ui->lENombreC->text(), \
                               ui->lEApeC->text(), ui->lEEdadC->text(), ui->cBSexo->currentText(), \
                            ui->lETelefonoC->text() ,ui->lECelularC->text(), \
                               ui->lEEmail->text(), ui->tENota->toPlainText() ) == true ){
            QMessageBox::warning( 0,"EXITO", "DATOS AGREGADOS CORRECTAMENTE", QMessageBox::Yes );
            cnnDB->userUse( "true" );
            cleardatsWidget( );
            emit closeWidgetrD( );
            close( );
        }else{
            QMessageBox::warning( 0,"ERROR", "No se ha insertado dato alguno", QMessageBox::Yes );
        }
    }
    return;
}

//FUNCION QUE RETORNA TRUE SI TODOS LOS DATOS REQUERIDOS
//HN SIDO INSERTADOS, FALSE EN CASO CONTRARIO
bool misdatos::recuestDats( void ){
    QMessageBox alerta;
    QFont serifFont("MS Shell Dlg 2", 10, QFont::Cursive );
    alerta.setFont( serifFont );
    int extra = 0;
    QString title, subtitle;
    title.append("ERROR");
    if( ui->lENombreC->text() == "" ){
        subtitle.append("No puedes dejar tu nombre en blanco");
        extra = 1;
    }else{
        if( ui->lEApeC->text() == "" ){
            subtitle.append("No puedes dejar tus apellidos en blanco");
            extra = 1;
        }else{
            if( ui->lEEdadC->text() == "" ){
                subtitle.append("No puedes dejar tu edad en blanco");
                extra = 1;
            }else{
                if( ui->lEEmail->text() == "" ){
                    subtitle.append("No puedes dejar tu email en blanco");
                    extra = 1;
                }
            }
        }
    }
    if( extra == 1 ){
        alerta.setWindowTitle( title );
        alerta.setText( subtitle );
        alerta.setIcon( QMessageBox::Warning );
        aceptar =  alerta.addButton("Aceptar", QMessageBox::YesRole );
        alerta.exec();
        return false;
    }
    //SI SE DEJO ALGUN CAMPO EN BLANCO DE LOS QUE NO SON NECESARIOS
    //SE RELLENARA CON 0 POR DEFAULT
    if( ui->lECelularC->text() == "" ){
        ui->lECelularC->setText("No especifique ninguno");
    }
    if( ui->lETelefonoC->text() == "" ) {
        ui->lETelefonoC->setText( "No especifique ninguno" );
    }
    if( ui->tENota->toPlainText() == "" ){
        ui->tENota->setText( "No hay nota alguna sobre mí..." );
    }
    if( ui->LEFcaebook->text() == "" ){
        ui->LEFcaebook->setText("No especifique");
    }
    if( ui->LETwietter->text() == "" ){
        ui->LETwietter->setText("No especifique");
    }
    if( ui->LEEmail2->text() == "" ){
        ui->LEEmail2->setText("No especifique");
    }
    if( ui->LEWeb->text() == "" ){
        ui->LEWeb->setText("No especifique");
    }
    return true;
}

//FUNCION QUE CARGA LA RUTA DE LA IMAGENA
//QUE REPRESENTARA AL CONTACTO
void misdatos::loadImg( const QString path ){
    ui->lblImagenContacto->setPixmap( path );
    ui->QPBQuitarImagen->setEnabled( true );
    return;
}
//FUNCION PARA QUITAR LA IMAGEN
void misdatos::clearImg( void ){
    ui->lblImagenContacto->setText( "No hay imagen cargada" );
    ui->QPBQuitarImagen->setEnabled( false );
    return;
}

//SLOT PARA BUSCAR LA IMAGEN
void misdatos::browImg( void ){
    QString filename = QFileDialog::getOpenFileName( this, tr("Seleccionar Imagen que me identificara"), QDir::currentPath(),
                tr("Imagen (*.jpeg *.jpg *.gif *.png)") );
        if( !filename.isNull() ){
            //COPIAMOS LA IMAGEN A NUESTRA CARPETA
            //TEMPORAL ANTES DE PASAR A LA CARPETA
            //ESPECIAL PARA LAS IMAGENES
            QFile imagen( filename );
            imagen.copy( filename, "tmp/mi_imagen.jpeg" );
            //MUESTRA LA IMAGEN
            loadImg( filename );

        }
    return;
}

//SLOT PARA CERRAR EL WIDGET
void misdatos::closeWidget( void ){
    int sel;
    sel = clApp->cancelInsertApp( "Cerrar ventana", \
                            "Estas cancelando la operación", "¿Realmente deseas cancelar la operación?" );
    if( sel == 0 ){
        cleardatsWidget( );
        emit closeWidgetrD( );
        close( );
    }
    return;
}
